package com.ruoyi.business.service.user;

import com.ruoyi.business.domain.entity.UserInfo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface IUserInfoService {
    /*
    * 查询用户列表
    * @param id主键
    * @return 用户列表
    * */
    /**
     * 根据主键查询用户信息
     *
     * @param id 主键
     * @return 用户信息
     */
    public UserInfo selectUserInfoById(Long id);

    /**
     * 条件查询用户列表（含数据权限注解在实现层）
     *
     * @param userInfo 查询条件
     * @return 用户列表
     */
    List<UserInfo> selectUserList(UserInfo userInfo);

    /**
     * 新增用户列表
     *
     * @param userInfo 用户列表
     * @return 结果
     */
    /**
     * 新增用户
     *
     * @param userInfo 用户信息
     * @return 影响行数
     */
    public int insertUserInfo(UserInfo userInfo);

    /**
     * 更新用户
     *
     * @param userInfo 用户信息
     * @return 影响行数
     */
    public int updateUserInfo(UserInfo userInfo);

    /**
     * 批量删除用户
     *
     * @param userIds 用户唯一标识数组
     * @return 影响行数
     */
    public int deleteUserInfoByIds(String[] userIds);

    /**
     * 删除用户列表信息
     *
     * @param userId 用户唯一标识
     * @return 结果
     */
    /**
     * 删除用户
     *
     * @param userId 用户唯一标识
     * @return 影响行数
     */
    public int deleteUserInfoById(String userId);
    /*
    * 导出用户列表
    * */
    /**
     * 导出查询用户列表
     *
     * @param userInfo 查询条件
     * @return 用户集合
     */
    public List<UserInfo> selectUserInfoList(UserInfo userInfo);

    /**
     * 从Excel文件导入用户数据（监护人和被监护人）
     *
     * @param file Excel文件
     * @param taskSource 任务来源
     * @param fileName 文件名
     * @param userName 操作用户
     * @return 导入记录ID
     */
    /**
     * 从 Excel 文件导入用户数据（异步处理入库）
     *
     * @param file       Excel 文件
     * @param taskSource 任务来源说明
     * @param fileName   文件名
     * @param userName   操作人
     * @return 导入记录 ID（异步任务标识）
     */
    Long importUserInfoFromExcel(MultipartFile file, String taskSource, String fileName, String userName);
}
